package com.zmn.oms.third.taobao.service;

import com.zmn.oms.model.entity.warn.OrderWarnReplyEvent;
import com.zmn.oms.model.entity.work.OrderWorkLogChange;
import com.zmn.oms.third.taobao.dto.WorkerInfoDTO;
import com.zmn.oms.third.taobao.dto.WorkerTagsDTO;
import com.zmn.oms.third.taobao.dto.api.TmallApiInvokResult;

import java.util.Date;
import java.util.List;

/**
 * 类描述：
 *
 * @author LiangHailong
 * @date 2019/09/20 15:53
 */
public interface TmallService {

    /**
     * 拉取未服务预警信息
     *
     * @param endTime
     */
    void pullOrderWarns(Date endTime);

    /**
     * 同步预约时间
     *
     * @param orderId
     * @param mqMsgKey 自定义标识，对应orderNotifyLog中的mqMsgKey字段，可以为空。
     */
    void syncDutyTime(Long orderId, String mqMsgKey);

    /**
     * 同步预约时间
     *
     * @param orderWorkLogChange
     */
    void syncDutyTime(OrderWorkLogChange orderWorkLogChange);

    /**
     * 同步预约失败
     *
     * @param orderWorkLogChange
     */
    void syncReserveFailed(OrderWorkLogChange orderWorkLogChange);

    /**
     * 同步挂起
     *
     * @param orderWorkLogChange
     */
    void syncHangUp(OrderWorkLogChange orderWorkLogChange);

    /**
     * 同步工程师信息
     *
     * @param orderWorkLogChange
     */
    void syncMaster(OrderWorkLogChange orderWorkLogChange);

    /**
     * 同步订单完成
     *
     * @param orderWorkLogChange
     */
    void syncOrderComplete(OrderWorkLogChange orderWorkLogChange);

    /**
     * 同步订单取消
     *
     * @param orderWorkLogChange
     */
    void syncOrderCancel(OrderWorkLogChange orderWorkLogChange);

    /**
     * 回复消息预警
     *
     * @param orderWarnReplyEvent
     */
    void replyOrderWarn(OrderWarnReplyEvent orderWarnReplyEvent);

    /**
     * 同步签到
     *
     * @param orderId
     */
    boolean syncSignIn(Long orderId, String mqMsgKey);

    /**
     * 同步派单
     *
     * @param orderId                  工单id
     * @param masterPhone              工程师手机号
     * @param stopOrderTypeCheckReason 服务商不检查订单类型的原因ID
     */
    TmallApiInvokResult syncOrderDistribute(Long orderId, String masterPhone, String masterName, Long stopOrderTypeCheckReason);
}
